{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### gQuant Tutorial\n",
    "First import all the necessary modules."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys; sys.path.insert(0, '..')\n",
    "import os\n",
    "import warnings\n",
    "import ipywidgets as widgets\n",
    "from gquant.dataframe_flow import TaskGraph\n",
    "\n",
    "warnings.simplefilter(\"ignore\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this tutorial, we are going to use gQuant to do a simple quant job. The task is fully described in a yaml file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "- id: load_csv_data\n",
      "  type: CsvStockLoader\n",
      "  conf:\n",
      "    path: ./data/stock_price_hist.csv.gz\n",
      "  inputs: []\n",
      "- id: node_assetFilter\n",
      "  type: AssetFilterNode\n",
      "  conf:\n",
      "    asset: 22123\n",
      "  inputs: \n",
      "    - load_csv_data\n",
      "- id: node_sort\n",
      "  type: SortNode\n",
      "  conf:\n",
      "    keys: \n",
      "      - asset\n",
      "      - datetime\n",
      "  inputs: \n",
      "    - node_assetFilter\n",
      "- id: node_addReturn\n",
      "  type: ReturnFeatureNode\n",
      "  conf: {}\n",
      "  inputs: \n",
      "    - node_sort\n",
      "- id: node_ma_strategy\n",
      "  type: MovingAverageStrategyNode\n",
      "  conf:\n",
      "      fast: 5\n",
      "      slow: 10\n",
      "  inputs: \n",
      "    - node_addReturn\n"
     ]
    }
   ],
   "source": [
    "!head -n 31 ../task_example/simple_trade.yaml"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The yaml file is describing the computation task by a graph, we can visualize it"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABAgAAAJ7CAYAAABu/6NPAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdeXhU5cH+8Xuy75OFkJAVRAiyiEDZ4QeyBRRkE6QiSOtCa61FRNur9vWy+qp9RWttoa9V61p3W0BAgbBUDYtWkE1MgiIhIXtIJpM9mTy/P9qc1xhQgsAJ4fu5rnNl5syTM/cz4Q/OPWdxGGOMAAAAAADAxWyll90JAAAAAACA/SgIAAAAAAAABQEAAAAAAJB87A4AAABwuioqKuTxeFRWViaPx6OKigpJUm1trWpqalqNr6mpUW1tbav13t7eCgsLa7Xex8dHoaGhkqTAwEAFBAQoJCREvr6+cjqd8vLiuxUAQMdFQQAAAM45j8ej4uJiazlx4oRcLpdcLpfKy8tP+tjlclk7/lVVVaqvr7d7GnI4HAoPD7eKhKCgIDmdTjmdToWHh7d43Lw4nU5FRkaqS5cuio6OVkBAgN3TAADgpCgIAADAGauurtaxY8eUm5trLcXFxSoqKlJBQUGLUuCbN04KCws76Y51fHy8wsPDFRYW1upb/LCwMHl7eys8PFze3t5yOp2STn1EgK+vr0JCQlqtr6urU3V1dav1Xz/ioLq6WnV1dXK73WpsbJTL5VJTU1OLoxdqampalBr5+flW0VFWVmb9zteFhoYqNjZWnTt3VqdOnazHMTExSkpKUmJiohISEtSpU6cz/rsAAHAmHNzmEAAAnIrb7dbhw4f1xRdf6Msvv1Rubq6OHTumnJwc5ebmqrS01BobGBiohIQEde7cWdHR0dY35tHR0dZOcPPzqKgoORwOG2d2/rjdbpWUlLQoTPLz863HBQUFVqHyzc8zKSlJCQkJSkhIUHJyspKTk9WjRw/16NFDsbGxNs4KANABraQgAADgItfQ0KDPP/9cmZmZ+uKLL6xCICsrS4WFhZL+fW5+885qcnKytdOamJhorY+KirJ5Jhe+mpoaZWdnW0djfL2MycnJ0VdffWUd+RAaGqpLL71UPXr0sH6mpKSoT58+Jz2aAgCA70BBAADAxSQvL0+HDh3SZ599pt27d1uPmw+rj4iIUO/evdWnTx9dcskl1tK7d28FBgbanB6SVFZWpiNHjuizzz7ToUOHdOTIER05ckQZGRmqqqqSJHXp0kV9+vRR7969NWjQIPXp00d9+vTh+gcAgG9DQQAAQEeVn5+vjz76SB999JF27dqlTz/9VC6XS5KUmJiofv36tVhSUlLk7+9vc2qcqaamJmVnZ+vgwYM6cOCA9u/fr4MHDyorK0sNDQ3y8/NT3759NXToUA0ZMkRDhw5VSkoKd2YAADSjIAAAoCNobGzUJ598oh07dliFwLFjx+Tl5aVevXppyJAhGjx4sFUGhIeH2x0Z50l9fb0+//xzHThwQHv27NHHH3+sPXv2qKamRk6n0yoLhg0bptGjR3N6AgBcvCgIAAC4UB05ckSbN2+2lrKyMjmdTg0ePFgjR47UoEGDNGLECK4NgFYaGxuVmZmp3bt3a/v27UpPT1dGRoYcDoeuuOIKTZgwQRMmTNDIkSM5tQQALh4UBAAAXCjKysq0bt06rVu3Ttu2bVNxcbGioqI0duxYjRs3TuPGjVOvXr3sjokLVHFxsbZt26atW7dq69atOnz4sAICAjRixAilpqZq1qxZuvTSS+2OCQA4dygIAABoz/Ly8rR69WqtWrVK77//vhwOh6688kpNnDhR48aNU//+/TmHHOdETk6Otm7dqi1btui9995TSUmJ+vbtq5kzZ2rmzJkaMGCA3REBAGcXBQEAAO2Ny+XSa6+9ppdeekm7du1ScHCwpkyZopkzZ+qqq66S0+m0OyIuMh6PRx988IFWrVql1atXKycnR127dtX111+vH//4x+revbvdEQEA3x8FAQAA7YExRunp6Xr22Wf19ttvyxij2bNna+7cuZo4cSK3p0O7YYzR7t279fe//10vv/yy8vLyNHbsWN10002aPXs2/1YB4MJFQQAAgJ0aGhr04osv6rHHHlNmZqYGDhyom266Sddffz13GkC75/F49N577+mvf/2r1q9fr5CQEN1yyy2666671LlzZ7vjAQDahoIAAAA71NfX67nnntPvfvc75efna+HChbrttts4rxsXrIKCAr3wwgv6wx/+ILfbrcWLF+vuu+9Wly5d7I4GADg9FAQAAJxvL7/8su69914VFRXppptu0i9/+UslJSXZHQs4K6qrq/X0009r+fLlKisr02233abf/va3Cg4OtjsaAODbreSyxwAAnCdHjx7V5MmTtWjRIk2dOlVffvmlVq5ceU7Lgccee0wOh0MOh0MJCQnn7H2+y+uvv27luBjPUb+Y5h8UFKQlS5boyy+/1KOPPqrnn39effv21aZNm+yOBgD4DhQEAACcBytWrFC/fv2Um5ur9PR0/fnPf1Z8fPw5f99ly5bJGKP+/fuf8/f6NvPmzZMxRuPHj7c1h10uxvkHBATo9ttv16FDhzRkyBClpqZq0aJFcrvddkcDAJwCBQEAAOdQfX29Fi1apCVLlmjp0qXas2ePhg8fbncsXMBCQkI0atQou2OctpiYGL3xxhtas2aNNmzYoBEjRujo0aN2xwIAnAQFAQAA50hjY6PmzZunVatWad26dfrtb38rPz8/u2MBtrjmmmv0r3/9S97e3ho7dqyys7PtjgQA+AYKAgAAzpGlS5cqLS1N7733niZPnmx3HMB2iYmJ2rp1qyIiInTVVVepqqrK7kgAgK+hIAAA4BzYsGGDVqxYoeeee04jRoywO84plZaWaunSperevbv8/PwUERGhKVOmaNu2bS3GNTY26o033tDEiRMVGxurwMBA9evXT08++aSamppabTcjI0MzZsyQ0+lUcHCwRo8erfT09LOa19/fXwkJCZowYYJeeOEF1dTUWOPq6up03333qVevXgoKClJkZKSmTZumd955Rx6PR+Xl5dZFA5uX//7v/7bm+vX11157bZtztmX+p/vZNl9wsqqqStu3b7fy+fj4tHlbdoqMjNTatWtVVFSke+65x+44AICvMwAA4Ky74oorzKxZs+yOYenfv7+Jj49vsS4/P99069bNxMTEmLVr1xqXy2UyMzPNrFmzjMPhMM8884w1du3atUaSefjhh82JEydMcXGx+eMf/2i8vLzMsmXLWmz38OHDJjw83MTHx5tNmzYZt9tt9u/fbyZNmmS6du1q/P39z2gOzXljY2PN2rVrTUVFhSkoKDAPPvigkWSeeOIJa+zNN99snE6n2bRpk6murjYFBQVm2bJlRpLZtm2bNW7y5MnGy8vLfPHFF63eb/jw4ebVV19tc862zr8tn60xxgQHB5uRI0ee9L3bui07Pf/888bHx8d8+eWXdkcBAPzbCgoCAADOsgMHDhhJZseOHXZHsZysIFi0aJGRZF577bUW62tra01cXJwJDAw0BQUFxph/73iOHTu21XZvuOEG4+vra1wul7Vuzpw5RpJ5++23W4w9fvy48ff3P+OCoDnvG2+80eq1yZMntygIunXrZkaMGNFqXM+ePVsUBJs3bzaSzG233dZiXHp6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AAB0BHl5eTp06JCOHDmiI0eO6LPPPtOhQ4d09OhR6wJ+ERERuuSSS1oszaVAr169uPBeB1FWVmb9O2hemkuEzMxMqxQKDw9X9+7drX8LvXv3Vp8+ffi3AAAXLwoCAAAuJKWlpdq7d6/27t2rffv2af/+/crIyFBdXZ0kqXPnzurVq5d69uyplJQUa+natWu7OMwf9jLG6Pjx48rKylJWVpYyMzOVkZGhrKwsZWdny+PxyMvLS8nJybr88svVv39/XXHFFerfv7+6detmXfcBANAhURAAANBeHTt2TB999JFVBuzbt0+5ubmSpNjYWGvHrXfv3lYpEB4ebnNqXKjq6up0+PBhZWZmKjMzU/v27dPevXv1xRdfqKmpSU6n0yoN+vfvr8GDB6tv377WRR8BABc8CgIAANqDxsZG7du3T+np6dq9e7fS09P11VdfydvbW8nJyerdu7cGDRqkQYMG6Qc/+IG6dOlid2RcJOrr63X48GHt3r3bWvbt26fKykoFBwfriiuu0KBBgzRq1CiNHTtW0dHRdkcGAJwZCgIAAOxQU1OjDz/8UGlpadq+fbv27Nmjuro6RUdHa/jw4dYyePBgBQUF2R0XaMHj8ejQoUPasWOHdu7cqV27dikzM1MOh0MpKSkaPny4JkyYoAkTJnAxRAC4cFAQAABwPhhjdODAAW3atElpaWn68MMPVVNTo969e2vMmDEaPny4hg0bph49etgdFTgjJSUl2rVrl3bu3KkPP/xQu3btUmNjo6644gpNmjRJkyZN0siRI+Xv7293VADAyVEQAABwrjQ2NmrLli16++23tW7dOhUUFKhTp06aMGGCJk6cqEmTJikhIcHumMA5UVlZqW3btlmlWGZmpoKCgjRu3Dhde+21mj59OtfMAID2hYIAAICzqbGxUVu3btVbb72lVatWqbS0VIMHD9bMmTM1adIkDRgwQF5eXnbHBM677OxspaWlae3atdq4caOMMZo4caLmzp2ra665hrIAAOxHQQAAwNlw+PBhrVy5Uq+88opKSko0aNAgzZ07V3PmzFG3bt3sjge0Ky6XS++8847efPNNpaWlSZKuuuoq3XbbbRo/fjy3UwQAe1AQAABwppqamrRhwwb96U9/0saNG9W1a1fdfPPNmjdvni655BK74wEXhPLycq1Zs0bPPfecPvjgA1122WX62c9+poUL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T6mhoUHz58/Xz3/+c85f74BKSkr0zDPP6H//9391/PhxTZ8+Xb/97W/5WwMAvg0FAQAAHV1lZaWeeOIJPf744/Lz89OyZct08803KzIy0u5oOMcaGxu1Zs0aPfzww9q7d6/mzZun3/72t7r00kvtjgYAaH9WetmdAAAAnDsvvPCCLrnkEj3++OO66667dOTIEd1zzz2UAxcJHx8fzZ49W5988oneeOMN7dmzR71799YvfvELVVZW2h0PANDOcAQBAAAdUE5OjhYvXqxNmzbp9ttv13333UcpAHk8Hr344ou65557FBYWpmeffVbjxo2zOxYAoH3gCAIAADqaN954Q/369dORI0f0wQcf6A9/+APlACRJ3t7e+vGPf6zPPvtMAwYM0IQJE/Tzn/9cDQ0NdkcDALQDFAQAAHQgDz/8sH74wx/qxhtv1N69ezVixAi7I31vr7/+uhwOhxwOhwICAuyO0yHExMTo73//u1599VW98MILmjp1qioqKuyOBQCwGacYAADQAXg8Hi1evFgvvPCC/vSnP+mnP/2p3ZHOugkTJig9PV21tbV2R+lQ9uzZo2nTpqlTp07asGGDunTpYnckAIA9OMUAAICO4I477tCrr76qd955p0OWAxeLkJAQjRo16ry+58CBA7Vz507V1dVp5syZFDAAcBGjIAAA4AL34osv6qmnntIrr7yiq666yu44uAAlJSVp7dq1yszMpGACgIsYBQEAABewwsJC3XHHHbrzzjs1c+ZMu+PgAtajRw+9+uqreumll/Tmm2/aHQcAYAMKAgAALmAPPfSQwsLC9MADD5yX91u9erV1wUCHw6GjR4/quuuuU3h4uKKiojR16lR9+eWXrX6vtLRUS5cuVffu3eXn56eIiAhNmTJF27ZtazU2IyNDM2bMkNPpVHBwsEaPHq309PRTZiouLtYdd9yhrl27ys/PT9HR0Zo1a5b27t17RnOsq6vTfffdp169eikoKEiRkZGaNm2a3nnnHXk8njbP65ufWWZmpubOnauoqChr3a9+9Ss5HA5VVVVp+/bt1nofH58zmsOZmjJlihYsWKBf//rXampqOq/vDQBoBwwAALgg1dTUGKfTaZYvX37e33v69OlGkpk+fbrZsWOHqaysNGlpaSYwMNAMHjy4xdj8/HzTrVs3ExMTY9auXWtcLpfJzMw0s2bNMg6HwzzzzDPW2MOHD5vw8HATHx9vNm3aZNxut9m/f7+ZNGmS6dq1q/H392+x7by8PJOcnGxiYmLM+vXrjdvtNgcPHjRjxowxAQEBZseOHW2e280332ycTqfZtGmTqa6uNgUFBWbZsmVGktm2bdsZzevrn9mYMWPMtm3bTFVVldm1a5fx9vY2xcXFxhhjgoODzciRI9uc+WzKyMgwDofDbNy40dYcAIDzbgUFAQAAF6j333/fSDJHjx497+/dvLO7du3aFuuvvfZaI8na4TXGmEWLFhlJ5rXXXmsxtra21sTFxZnAwEBTUFBgjDFmzpw5RpJ5++23W4w9fvy48ff3b1UQ3HjjjUaSeeWVV1qsz8/PN/7+/mbQoEFtnlu3bt3MiBEjWq3v2bNni4KgLfMy5v8+s3ffffeU790eCgJjjLn88svNXXfdZXcMAMD5tYJTDAAAuEBlZGQoIiJCycnJtmUYPHhwi+eJiYmSpLy8PGvdqlWrJElXX311i7H+/v4aP368ampqtHHjRknShg0bJEmpqaktxsbFxalnz56t3n/16tXy8vLS1KlTW6yPjY3V/2fvzsOjqg/9j38myWSyLyQhYUkggISwiMiiQJAgEEDZEbACSrVKr20VrVZb7896tVeu1daLlZZiFbVSRa2A7EEKIiEoREBCTEJAIEB2kpB9/f7+8GZqTACDyAnh/Xqe82TmO2fOfM7M+Mj5zFn69OmjpKQknTx5skXrNH78eO3atUv33Xefdu/e7TysIC0tTbGxsRe1Xt80ZMiQFuWxwoABA5Sammp1DADAZUZBAADAFaqsrExeXl6WZvD39290393dXZKcx69XVVWpuLhYHh4e8vX1bfL80NBQSVJ2draqqqpUUlIiDw8P+fj4NJm3ffv2je43LLu+vl7+/v6NjvO32Wz6/PPPJUmHDx9u0TotWbJEb775po4eParRo0fLz89P48ePdxYCLV2vb/P29m5RHiv4+PiotLTU6hgAgMuMggAAgCtUUFCQCgoKVFtba3WUc3I4HPL391dlZaVKSkqaPJ6TkyPp61/8HQ6HfH19VVlZ2ezG6ZkzZ5osOyAgQG5ubqqpqZExptlp1KhRLcpss9k0b948ffTRRyoqKtLq1atljNH06dP1xz/+scXr1dLXbg2ys7MVEhJidQwAwGVGQQAAwBVq0KBBqqys1N69e62Ocl4Nl19cv359o/Gqqipt3bpVnp6ezkMKJkyYIOnfhxo0yM/PV1paWpNlT58+XbW1tUpISGjy2HPPPaeIiIgWFygBAQHO3evtdrvGjh3rvBLBN9ehJev1XXl5eam6utp5PyoqSsuWLWvRMr6vuro6JSQkaNCgQZf1dQEA1qMgAADgCtW7d29FR0dr+fLlVkc5r0WLFikyMlILFy7UunXrVFJSovT0dN1xxx3KysrS4sWLnbvkP/vss2rXrp0WLlyoLVu2qLS0VCkpKZo7d26zhx0sWrRI3bt31913362NGzequLhYZ86c0V//+lc9/fTTeuGFFy7qUoE//elP9cUXX6iqqkq5n9fXBAAAIABJREFUubn6/e9/L2OMbr755otar+/q+uuvV3p6ujIzM5WYmKijR49qxIgRLc7/fWzcuFE5OTnOAgQAcBWx7gSJAADg+1q2bJlxd3c3aWlpl+X1EhMTjaRG0xNPPGGMMU3Gb731Vufz8vPzzcKFC01kZKSx2+3G39/fjBs3zmzdurXJa6SlpZmpU6caPz8/52UT161bZ0aPHu1c9j333OOcv6CgwDz88MOmW7duxm63m5CQEBMXF2e2bNlyUeu4f/9+s2DBAhMdHW28vLxMu3btzI033mheeeUVU19f32je77Jezb1n5/onWGpqqhkxYoTx9vY24eHhZsmSJRe1DherpqbGXHfddWbixImX9XUBAK3CyzZjjLGglwAAAJdAXV2dBg8eLIfDoR07dshut1sdCVewX/7yl1q6dKmSkpLUq1cvq+MAAC6vJRxiAADAFczV1VUrVqzQwYMHtWDBAtH742L9/e9/14svvqhXX32VcgAArlItPygPAAC0KtHR0Xrvvfc0ZcoUGWO0bNky9iRAi7z55pu699579dhjj+n222+3Og4AwCLsQQAAQBswYcIEbdiwQatWrdL48eNVVFRkdaRWxWazXXB66qmnrI5picWLF2v+/Pn66U9/qv/+7/+2Og4AwEKcgwAAgDbkwIEDuvXWW+Xj46PXXntNw4YNszoSWqns7Gzdf//9Wrt2rZYsWaL77rvP6kgAAGtxDgIAANqS/v3767PPPlP37t01YsQIPfTQQyovL7c6FlqZt956S3369NH+/fu1ZcsWygEAgCQOMQAAoM3p2LGj1q9fr+XLl+uNN95Q37599dZbb6m+vt7qaLDY3r17NXbsWN11112aM2eODh48qNjYWKtjAQBaCQoCAADaqDvvvFOHDh1SbGys5s+fr/79+2vNmjVc6eAqlJKSohkzZmjIkCEqKyvTJ598opdeekne3t5WRwMAtCIUBAAAtGEdOnTQa6+9puTkZEVHR2vatGkaNGiQXn/9dVVWVlodDz+wjz/+WDNnztS1116rjIwMrVmzRrt27eLcFACAZlEQAABwFejVq5feffddJSUlqVevXlqwYIEiIiL0m9/8RpmZmVbHwyVUXl6uV155Rf3791dsbKxOnTqlf/zjH9q3b58mTZpkdTwAQCvGVQwAALgK5eTk6PXXX9eSJUt06tQpDR06VDNnztScOXMUHBxsdTy0UF1dnRITE/X3v/9d77zzjiorKzVlyhQtXLiQvQUAAN/VEgoCAACuYtXV1Vq3bp1WrFihDRs2yBijCRMmaPbs2Ro/frwCAgKsjohzqK2t1c6dO/X+++/rvffeU25urm688Ub96Ec/0o9+9COFhIRYHREAcGWhIAAAAF8rLi7WqlWr9Pbbb2vr1q2y2WwaNmyYJkyYoFtuuUXXXnut1RGvetnZ2dqwYYM2btyoLVu2qLi4WL1793aWAt27d7c6IgDgykVBAAAAmiosLFR8fLw2bNigTZs2KTc3V507d9aoUaMUExOjESNGqFevXrLZbFZHbdNycnK0c+dOffLJJ/r444914MABORwOxcbGOoubHj16WB0TANA2UBAAAIDzq6+vV1JSkjZt2qQdO3Zo9+7dKi0tVUhIiIYPH64RI0bo+uuv14ABA+Tv72913CtWTU2NkpOTtW/fPiUkJGjnzp1KT0+Xq6ur+vfvr5iYGMXFxWnUqFHy8vKyOi4AoO2hIAAAAC1TW1urzz//XDt37tSOHTuUmJio3Nxc2Ww2devWTQMGDHAWBtHR0YqIiGBPg285c+aMvvzyS+3fv1/79u3Tvn37lJycrOrqanl5eWngwIG66aabFBMTo2HDhsnPz8/qyACAto+CAAAAfH8nT550bug2TMePH5ckeXl5KSoqSj179lSvXr0UFRWla665RhEREWrfvr3FyX84paWlOnHihI4cOaLU1FSlp6crNTVVqampys/PlyQFBARowIABjaZevXrJ1dXV4vQAgKsQBQEAAPhhnDlzxrlBnJaWpvT0dH355Zc6evSoampqJEkeHh6KiIhQeHi4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1KLMbUFNTY2OHDmirl27Wh0FANoUCgIAAJrRqVMnXX/99Vq+fLnVUS6JadOmSZLWr1/faLyqqkpbt26Vp6enc5f7CRMmSPr3rvgN8vPzmy1Mpk+frtra2mZ3937uuecUERGh2tra75y1rq5OCQkJCgsL0wMPPKCQkBDnxnNFRUWT+Vuat6XzX8jMmTM1YMAAbd26VVu2bHGOt/R98fLyalQAREVFNTp0oUOHDjp16lSj5WRnZ+vEiRMtznyl++CDD3T27Nkmh28AAL4fCgIAAM7h17/+tf7xj380eyz8lWbRokWKjIzUwoULtW7dOpWUlCg9PV133HGHsrKytHjxYuehBs8++6zatWunhQsXasuWLSotLVVKSormzp3b7G75ixYtUvfu3XX33Xdr48aNKi4u1pkzZ/TXv/5VTz/9tF544QXnJfu+C1dXV8XGxio7O1vPP/+88vPzVVFRoW3btmnp0qVN5m9p3pbOfyE2m02/+93vJEmPP/64c++Glr4v119/vdLT05WZmanExEQdPXpUI0aMcD4eFxen06dP6+WXX1ZpaamOHDmiBx98sEWHRbQFhYWF+tWvfqW5c+c6z5UAALhELvdpEQEAuJLMmjXLBAUFmZSUFKujOCUmJjY5k/4TTzxhjDFNxm+99Vbn8/Lz883ChQtNZGSksdvtxt/f34wbN85s3bq1yWukpaWZqVOnGj8/P+cl79atW2dGjx7tXPY999zjnL+goMA8/PDDplu3bsZut5uQkBATFxdntmzZclHrmJeXZxYsWGDCw8ON3W43oaGhZv78+ebxxx93vv43rwLQ0rwtmd/b27vJ+zp79uwmmWNiYpyPN1xtoCXvS2pqqhkxYoTx9vY24eHhZsmSJY0eLyoqMj/5yU9Mhw4djKenp4mJiTF79uwxAwcOdL7uY4891uz349v/5LvY75DVysvLzahRo0xERITJzc21Og4AtDUv24z5v5obAAA0UVFRobi4OKWmpurDDz/U0KFDrY4EXJXy8/M1depUffnll9q+fbv69etndSQAaGuWcIgBAADn4enpqc2bN2vo0KGKjY3VCy+80KrP7A60Rdu3b9eAAQN06tQp7dy5k3IAAH4gFAQAAFyAl5eX1qxZo9///vd64oknNHjwYH388cdWxwLavFOnTmnBggUaPXq0Bg0apKSkJEVHR1sdCwDaLAoC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cOj+++9Xbm6u/vCHP2jFihV68MEHv9O6tgZpaWmKj4/XzJkzrY4CAK0aBQEA4KoQEBCgX/7yl3ryyScv6tj01mzRokWKjIzUwoULtW7dOpWUlCg9PV133HGHsrKytHjxYuehBs8++6zatWunhQsXasuWLSotLVVKSormzp3b7C7nixYtUvfu3XX33Xdr48aNKi4u1pkzZ/TXv/5VTz/9tF544YUml9u7HFxdXRUbG6vs7Gw9//zzys/PV0VFhbZt26alS5d+r2X/9Kc/1RdffKGqqirl5ubq97//vYwxuvnmmxvNd/311ys9PV2ZmZlKTEzU0aNHNWLEiB8s//leryWfU3PfgeTkZP34xz9WWFjYOTPff//98vT01H/+539qzJgx6tGjx3daV6tVVFTozjvv1PXXX6+pU6daHQcAWrfLfVpEAACsUl1dbW666SbTsWNHk5qaanWcZiUmJhpJjaYnnnjCGGOajN96663O5+Xn55uFCxeayMhIY7fbjb+/vxk3bpzZunVrk9dIS0szU6dONX5+fs7LJq5bt86MHj3auex77rnHOX9BQYF5+OGHTbdu3YzdbjchISEmLi7ObNmy5ZKt3549e5qML1q0yHzyySdNxn/7298aY4zJy8szCxYsMOHh4cZut5vQ0FAzf/588/jjjzvnbelVFvbv328WLFhgoqOjjZeXl2nXrp258cYbzSuvvGLq6+sbzZuammpGjBhhvL29TXh4uFmyZMk517G5f3K1NP+5Xq9BSz6nb34HvLy8zLBhw8zHH39sYmNjjZeX1znfn3vvvbfZq0y0VuXl5WbChAkmKCio1f43DwCtyMs2Yy7iAD0AAK5QZ8+e1YQJE5SSkqK33nqryZn/gatZr169VFFRoePHjzf7+PLly7VkyRLt3bv3MidruWPHjmnGjBk6fvy4Nm3a1OTKGACAJpZwiAEA4Kri5+enrVu3aurUqZo0aZLuvfdeFRUVWR0LuGyys7PVrl071dTUNBo/duyYjhw50uRQim9aunSpHn744R864vdSX1+vv/zlL7r22mtVW1urzz77jHIAAL4jCgIAwFXHw8NDy5cv15o1a7Rx40Z1795dzz33nKqqqqyOBlwWhYWFWrBggTIzM1VeXq7PPvtMs2fPlp+fn/7f//t/zvn+9re/adq0aSotLdXSpUtVWFioWbNmWZj8/LZu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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "task_graph = TaskGraph.load_taskgraph('../task_example/simple_trade.yaml')\n",
    "task_graph.draw(show='ipynb')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We define a method to organize the output images"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_figures(o, symbol):\n",
    "    # format the figures\n",
    "    figure_width = '1200px'\n",
    "    figure_height = '400px'\n",
    "    bar_figure = o[2]\n",
    "    sharpe_number = o[0]\n",
    "    cum_return = o[1]\n",
    "    signals = o[3]\n",
    "\n",
    "    bar_figure.layout.height = figure_height\n",
    "    bar_figure.layout.width = figure_width\n",
    "    cum_return.layout.height = figure_height\n",
    "    cum_return.layout.width = figure_width\n",
    "    cum_return.title = 'P & L %.3f' % (sharpe_number)\n",
    "    bar_figure.marks[0].labels = [symbol]\n",
    "    cum_return.marks[0].labels = [symbol]\n",
    "    signals.layout.height = figure_height\n",
    "    signals.layout.width = figure_width\n",
    "    bar_figure.axes = [bar_figure.axes[1]]\n",
    "    cum_return.axes = [cum_return.axes[0]]\n",
    "    output = widgets.VBox([bar_figure, cum_return, signals])\n",
    "\n",
    "    return output"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We load the symbol name to symbol id mapping file:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "node_stockSymbol = {\"id\": \"node_stockSymbol\",\n",
    "                    \"type\": \"StockNameLoader\",\n",
    "                    \"conf\": {\"path\": \"./data/security_master.csv.gz\"},\n",
    "                    \"inputs\": []}\n",
    "name_graph = TaskGraph([node_stockSymbol])\n",
    "list_stocks = name_graph.run(outputs=['node_stockSymbol'])[0].to_pandas().set_index('asset_name').to_dict()['asset']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Evaluate the output nodes and plot the results:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "bef20587c5a94adbae804f78392f53b7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "VBox(children=(Figure(axes=[Axis(label='Price', orientation='vertical', scale=LinearScale(max=28.7799999999999…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "symbol = 'REXX'\n",
    "action = \"load\" if os.path.isfile('./.cache/load_csv_data.hdf5') else \"save\"\n",
    "o = task_graph.run(\n",
    "            outputs=['node_sharpeRatio', 'node_cumlativeReturn',\n",
    "                     'node_barplot', 'node_lineplot', 'load_csv_data'],\n",
    "            replace={'load_csv_data': {action: True},\n",
    "                     'node_barplot': {'conf': {\"points\": 300}},\n",
    "                     'node_assetFilter':\n",
    "                         {'conf': {'asset': list_stocks[symbol]}}})\n",
    "cached_input = o[4]\n",
    "plot_figures(o, symbol)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Change the strategy parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "80e2670f612249d3ae3bb8957f34f9fd",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "VBox(children=(Figure(axes=[Axis(label='Price', orientation='vertical', scale=LinearScale(max=28.7799999999999…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "o = task_graph.run(\n",
    "            outputs=['node_sharpeRatio', 'node_cumlativeReturn',\n",
    "                     'node_barplot', 'node_lineplot'],\n",
    "            replace={'load_csv_data': {\"load\": cached_input},\n",
    "                     'node_barplot': {'conf': {\"points\": 200}},\n",
    "                     'node_ma_strategy': {'conf': {'fast': 1, 'slow': 10}},\n",
    "                     'node_assetFilter': {'conf': {'asset': list_stocks[symbol]}}})\n",
    "figure_combo = plot_figures(o, symbol)\n",
    "figure_combo"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ddef9aedb65e4bf4af3380b1e0209f27",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "VBox(children=(HBox(children=(Dropdown(description='Add stock', options=('MIDAX', 'MMELX', 'BBDO', 'BSAC', 'BI…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "add_stock_selector = widgets.Dropdown(options=list_stocks.keys(),\n",
    "                                      value=None, description=\"Add stock\")\n",
    "para_selector = widgets.IntRangeSlider(value=[10, 30],\n",
    "                                       min=3,\n",
    "                                       max=60,\n",
    "                                       step=1,\n",
    "                                       description=\"MA:\",\n",
    "                                       disabled=False,\n",
    "                                       continuous_update=False,\n",
    "                                       orientation='horizontal',\n",
    "                                       readout=True)\n",
    "\n",
    "\n",
    "def para_selection(*stocks):\n",
    "    with out:\n",
    "        symbol = add_stock_selector.value\n",
    "        para1 = para_selector.value[0]\n",
    "        para2 = para_selector.value[1]\n",
    "        o = task_graph.run(\n",
    "                    outputs=['node_sharpeRatio', 'node_cumlativeReturn',\n",
    "                             'node_barplot', 'node_lineplot'],\n",
    "                    replace={'load_csv_data': {\"load\": cached_input},\n",
    "                             'node_barplot': {'conf': {\"points\": 200}},\n",
    "                             'node_ma_strategy': {'conf': {'fast': para1, 'slow': para2}},\n",
    "                             'node_assetFilter': {'conf': {'asset': list_stocks[symbol]}}})\n",
    "        figure_combo = plot_figures(o, symbol)\n",
    "        if (len(w.children) < 2):\n",
    "            w.children = (w.children[0], figure_combo,)\n",
    "        else:\n",
    "            w.children[1].children[1].marks = figure_combo.children[1].marks\n",
    "            w.children[1].children[2].marks = figure_combo.children[2].marks\n",
    "            w.children[1].children[1].title = 'P & L %.3f' % (o[0])\n",
    "\n",
    "\n",
    "out = widgets.Output(layout={'border': '1px solid black'})\n",
    "add_stock_selector.observe(para_selection, 'value')\n",
    "para_selector.observe(para_selection, 'value')\n",
    "selectors = widgets.HBox([add_stock_selector, para_selector])\n",
    "w = widgets.VBox([selectors])\n",
    "w"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
